/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Logic;

import java.io.*;
import java.util.*;
import javax.swing.JOptionPane;

/**
 *
 * @author Ramiro
 */
public class EscritorArchivoTXTdeMLC {

    private String ruta;
    private File directorio;

    public EscritorArchivoTXTdeMLC(String ruta) {
        super();
        this.ruta = ruta;
    }

    /*
     * Función para guardar el contenido de la matriz en un archivo de texto plano
     */
    public String GuardarArchivo(Vector matriz, String nombreMLC) throws Exception {

        FileWriter fichero = null;
        PrintWriter pw = null;
        String nombreArchivo = nombreMLC.replace("MLC", "txt");

        try {
            directorio = new File(ruta + "/Otros");
            if (directorio.exists()) {
                fichero = new FileWriter(this.directorio + "/" + nombreArchivo);//guardo el archivo en la carpeta donde esta el MLC original
                pw = new PrintWriter(fichero);
            } else {
                directorio.mkdir();
                fichero = new FileWriter(this.directorio + "/" + nombreArchivo);//guardo el archivo en la carpeta donde esta el MLC original
                pw = new PrintWriter(fichero);
            }

            this.imprimirMatriz(matriz, pw);
        } catch (IOException e) {
            throw e;
        } finally {
            try {
                // Nuevamente aprovechamos el finally para 
                // asegurarnos que se cierra el fichero.
                if (null != fichero) {
                    fichero.close();
                }

            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return nombreArchivo;
    }
    /*
     * Imprime cada vector de datos de la matriz en forma vertical, directamente en el archivo.
     */

    public void imprimirMatriz(Vector matriz, PrintWriter pw) {

        int tamanioLeaf = ((VectorDatos) matriz.elementAt(0)).getLeaf().size();
        int tamanioMatriz = matriz.size();
        int i;
        int x;

        //Inserto en el comienzo del archivo los índices
        for (i = 0; i < tamanioMatriz; i++) {
            pw.print(((VectorDatos) matriz.elementAt(i)).getIndex() + "\t");
        }

        pw.println();

        //Inserto los datos de los vectores
        for (i = 0; i < tamanioLeaf; i++) {
            for (x = 0; x < tamanioMatriz; x++) {
                pw.print(((VectorDatos) matriz.elementAt(x)).getElemento(i) + "\t");
            }
            if (x == tamanioMatriz) {
                pw.println();
            }
        }
    }
}
